package eSchool.GUI.Components;

import eSchool.Application.State.DataState;
import eSchool.BL.Aluno;
import eSchool.BL.Alunos;
import eSchool.BL.BasicEntityObject;
import eSchool.BL.BasicListObject;
import eSchool.BL.CriteriosPesquisa;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.TableModel;

public class UIConectorAluno implements IUIConector {

    private int tipo;
    private BasicListObject lista;
    private BasicEntityObject detalhe;

    public UIConectorAluno() {
        this.tipo = 1;
        lista = new Alunos();
        detalhe = new Aluno();
    }

    public int getTipo() {
        return tipo;
    }

    private BasicEntityObject getNovoDetalhe() {
        return new Aluno();
    }

    public TableModel getLista() {
        return lista;
    }

    public TableModel getDetalhe() {
        if (detalhe == null) {
            detalhe = getNovoDetalhe();
        }

        return detalhe;
    }

    public TableModel pesquisaLista(CriteriosPesquisa criterios) {
        try {
            lista = DataState.getConnection().getAlunos(criterios);

        } catch (Exception ex) {
            Logger.getLogger(UIConectorAluno.class.getName()).log(Level.SEVERE, null, ex);
        }

        return lista;
    }

    public TableModel pesquisaDetalhe(CriteriosPesquisa criterios) {
        try {
            detalhe = DataState.getConnection().getAluno(criterios.get(0).getValor().toString());

        } catch (Exception ex) {
            Logger.getLogger(UIConectorAluno.class.getName()).log(Level.SEVERE, null, ex);
        }

        return detalhe;

    }

    public void setDataSource(BasicListObject lista, BasicEntityObject detalhe) {
        this.lista = lista;
        this.detalhe = detalhe;
    }

    public void gravaDetalhe(TableModel tableModel) {
        try {
            detalhe = (Aluno) tableModel;
            DataState.getConnection().gravaAluno((Aluno) detalhe);

        } catch (Exception ex) {
            Logger.getLogger(UIConectorAluno.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public TableModel getDadosExtra(int tipo, CriteriosPesquisa criterios) {
        return null;
    }
}
